Skip to content

Conversation

@amaccuish
Copy link
Contributor

@amaccuish amaccuish commented Nov 1, 2025

Some clients (like Thunderbird) require the FolderClass as they filter out non-mail folders.

See https://community.grommunio.com/d/2362-thunderbird-ews/7

grammmike and others added 30 commits October 21, 2025 15:52
Add room list entry and room type EWS structures together with
serialization support so GetRoomLists/GetRooms payloads can be
produced.

References: GXL-621
Implement SQL-backed helpers and new GetRoomLists/GetRooms handlers
that gather visible resource mailboxes and return them over EWS.

Also optimize organization validation by directly comparing org_ids
instead of making an additional database call.

References: GXL-621
Register the room search handlers in the EWS request dispatch table
so clients (including Outlook4Win) can invoke them.

References: GXL-621
Match the TargetFolderIdType's element in Types.xsd.
tUserConfigurationName expands tTargetFolderIdType instead of
having own optional FolderId variants.
using mResponseMessageType::mResponseMessageType so that the
possible exception might be added to the ResponseMessages.
PR_ROAMING_XMLSTREAM and PR_ROAMING_BINARYSTREAM are required for
GetUserConfigurationResponse.

References: GXL-578 (#578)
The original documentation can be seen with ``git show 9f4de7e``.
It says that \N refers to capture substrings; this is in line with
admin expectations. But mod_rewrite does not produce that result *at
all*. The original rules

```
/OAB/oab.xml => \0/ews/oab.php
\(/Microsoft-Server-ActiveSync\) => \1/z-push/index.php
```

produce just ``/ews/oab.php`` and ``/z-push/index.php``,
respectively, and \0 or \1 translates to nothing.

Here is a new implementation, using a better substitution. There is
no more limitation on the URI length, number of capture groups, and
the stack usage is reduced too (hence marking as GXL-51).

Fixes: gromox-0~666
References: GXL-578
Avoid x_from_y function nomenclature.
References: DESK-3821
In doing so, skip empty properties.

References: GXL-641
Eliminates code duplication between CATEGORIES and X-MS-INTERESTS
handling by extracting a reusable helper function that also skips
empty array entries.

References: GXL-641
Replaces inline lambda with a reusable template function for
address handling. Template-based approach enables compile-time
optimization while maintaining type safety.

References: GXL-641
Validates that out_len from encode64 is within buffer bounds before
writing null terminator. Defense in depth against potential buffer
overflow if encode64 behaves unexpectedly.

References: GXL-641
Prevents potential out-of-bounds read if a malformed vCard contains
property IDs outside the expected range. Adds defensive validation
of array index before accessing propids array.

References: GXL-641
grammmichi and others added 4 commits November 1, 2025 01:03
Skip stray carriage returns. Only emit \line after real content, and
track whitespace, so that the RTF output matches the intended layout.

References: GXL-633
Keep the \uc fallback accounting in scope even after nested groups
have been processed, so that Unicode escapes keep working. This
change drops any pending fallback bytes before writing text, so as to
avoid stray “?” characters. It also resets the Unicode fallback state
when a reader starts, so that conversions stay consistent.

References: GXL-633
`std::min<T>(a, b)` is short, but if the type of `a` or `b` were to change and
become incompatible, the compiler would stay silent. Thus, using `std::min(a,
static_cast<T>(b))` like in the rest of the codebase is preferred as there is
still much refactoring expected generally.
Some clients (like Thunderbird) require the FolderClass as they
filter out non-mail folders.

References: GXF-2362
@jengelh jengelh merged commit ad84c9f into grommunio:master Nov 1, 2025
1 check passed
@amaccuish amaccuish deleted the patch-2 branch November 1, 2025 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants